
/**
 * @Project : Clion_ProgrammingExercises
 * @File : 2
 * @Author : WangRuoyu 
 * @Date : 2023/5/18 19:07
 */

#include "iostream"

using namespace std;

const int N = 300010;
int b[N];

void add(int l, int r, int c) {
    b[l] += c;
    b[r + 1] -= c;
}

int main() {
    int n, m, k;
    scanf("%d %d %d", &n, &m, &k);

    for (int i = 0; i < n; ++i) {
        int t, c;
        scanf("%d %d", &t, &c);
        t++;
        add(max(1, t - c + 1), t, 1);
    }

    for (int i = 1; i < N; ++i) {
        b[i] += b[i - 1];
    }

    for (int i = 0; i < m; ++i) {
        int t;
        scanf("%d", &t);
        cout << b[t + k + 1] << endl;
    }

    return 0;
}

//int main() {
//    int n, m, k;
//    scanf("%d %d %d", &n, &m, &k);
//
//    int t[n];
//    int c[n];
//
//    for (int i = 0; i < n; ++i) {
//        scanf("%d %d", &t[i], &c[i]);
//    }
//
//    for (int i = 0; i < m; ++i) {
//        int res = 0;
//        int tt;
//        scanf("%d", &tt);
//        tt += k;
//        for (int j = 0; j < n; ++j) {
//            if (tt >= t[j] - c[j] + 1 && tt <= t[j]) res++;
//        }
//        cout << res << endl;
//    }
//
//    return 0;
//}